#ifndef	OuadSPI_H__
#define OuadSPI_H__
#include  "sys.h"
#include "usbd_cdc.h"


#define OuadSPI_SCK							      GPIO_PIN_12       //CLK	
#define OuadSPI_SCK_Periph_GPIO				GPIOD
			
#define OuadSPI_MISO							    GPIO_PIN_3        //MISO    SI2
#define OuadSPI_MISO_Periph_GPIO			GPIOE
			
#define OuadSPI_MOSI						    	GPIO_PIN_13       //MOSI    SI0
#define OuadSPI_MOSIPeriph_GPIO				GPIOD
			
#define OuadSPI_DC								    GPIO_PIN_11		    //DCX     SI1
#define OuadSPI_DC_Periph_GPIO			  GPIOD

#define OuadSPI_CS										GPIO_PIN_4        //CS      
#define OuadSPI_CS_Periph_GPIO				GPIOE		

#define OuadSPI_HOLDE									GPIO_PIN_13       //HOLDE    SI3
#define OuadSPI_HOLDE_Periph_GPIO			GPIOG
#define OuadSPI_CLK_H()                       HAL_GPIO_WritePin(OuadSPI_SCK_Periph_GPIO,OuadSPI_SCK,GPIO_PIN_SET);
#define OuadSPI_CLK_L()                       HAL_GPIO_WritePin(OuadSPI_SCK_Periph_GPIO,OuadSPI_SCK,GPIO_PIN_RESET);
#define OuadSPI_CS_H()                        HAL_GPIO_WritePin(OuadSPI_CS_Periph_GPIO,OuadSPI_CS,GPIO_PIN_SET);
#define OuadSPI_CS_L()                        HAL_GPIO_WritePin(OuadSPI_CS_Periph_GPIO,OuadSPI_CS,GPIO_PIN_RESET);

void OuadSPI_Init(void);
void OSPI_Write_u8_Array(u8 OSPI_Mode,u8 channel ,u8* para,int offerset);
static void MOSI_set_read(void);  
static void MOSI_set_write(void);
void OSPI_Write_u8_A1D1(u8 OSPI_Mode,u8 channel ,u8 para);
u8 OSPI_Read_u8_A1D1(void);
void OSPI_Write_u8_GRAM_A1D4(u8 para);
void OSPI_Write_GRAM_A1D4(u8 OSPI_Mode,u8 channel ,u16 H_OLED,u16 V_OLED,u8 R,u8 G, u8 B, u8 flag,u8 RGB_fromat);
void OSPI_Read_Array_Data(u8 OSPI_Mode,u8 channel,u8 reg,u8 para[],u8 back_num);
void OuadSPI_WriteRAM_continue_part(u8 SPI_Mode,u8 channel ,u8* buffer ,u16 length,u8  multiple ,u8 Flag,u8 DUAL_SPI_MODE,u8 RGB_fromat);
void test(USBD_HandleTypeDef *pdev);

#endif

